package 尚硅谷多线程1;
/*
* 测试Thread中的常用方法
*
* 1.start() 启动当前线程，调用当前线程的run()
* 2.run(): 通常需要重写Thread类中的方法，将创建的线程要执行的操作声明再次方法中
* 3.currentThread() 静态方法，返回执行当前代码的线程
* 4.getName() 获取当前线程名字
* 5.setName() 设置当前线程名字
* 6.yield()//释放当前CPU的执行权 有可能下次又被CPU分配
* 7.join() 在线程a中调用线程b的join()，此时线程a 就进入阻塞状态，知道线程b完全执行完以后，线程a才结束阻塞状态
* 8. stop() 强制结束线程 不推荐使用已经过时
* 9.sleep(long millitime) 让当前线程"睡眠"指定的millitime毫秒。在指定的millitime毫秒时间内，当前线程是阻塞状态。
* 10. isAlive() 判断当前线程是否存活
* */
class helloThread extends Thread{
    @Override
    public void run(){

        for (int i = 0; i < 100; i++) {
            try {
                //线程睡眠 会自动抛出异常 只能用try()catch()的方法抛出异常，因为run()方法是重写Thread的类，Thread类中的run()没有抛出异常
                sleep(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(i%2==0){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
            if (i%20==0){
               this.yield();
            }
        }
    }
    public helloThread(String name){
        super(name);
    }
}

public class ThreadMethodTest {
    public static void main(String[] args) {
        //这个是和上面的构造器连用
        helloThread h2= new helloThread("子");
        //设置分线程的优先级
        h2.setPriority(Thread.MAX_PRIORITY);
        h2.start();
        //命名
        //helloThread h1 = new helloThread();
//        h1.setName("线程一");
//        h1.start();
        //给主线程起名字 Thread实在Java.lang包下的无需导入就可以使用
        Thread.currentThread().setName("主线程");
        //设置优先级
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
        for (int i = 1; i < 100; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + ":"+i);
            }
            if (i%20==0){
                try {
                    h2.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println(h2.isAlive());


        }
        System.out.println(h2.isAlive());
    }
}
